Cloud computing is a type of computing in which dynamically scalable and typically virtualized resources are provided as services via the Internet. As a result, users need not, and typically do not, possess knowledge of, expertise in, or control over the technology and/or infrastructure implemented in the cloud. Cloud computing generally incorporates infrastructure as a service (“IaaS”), platform as a service (“PaaS”), and/or software as a service (“SaaS”). In a typical embodiment, cloud computing services provide common applications online, which applications are accessed using a web browser and the software and data for which are stored on servers comprising the cloud.
Cloud computing customers typically do not own or possess the physical infrastructure that hosts their software platform; rather, the infrastructure is leased in some manner from a third-party provider. Cloud computing customers can avoid capital expenditures by paying a provider only for what they use on a utility, or resources consumed, basis or a subscription, or time-based, basis, for example. Sharing computing power among multiple lessees has many advantages, including but not limited to improved utilization rates and an increase in overall computer usage.
As an increasing number of applications move to a cloud computing-based architecture, a queuing design is being employed more frequently. In a queuing design, single processes are broken down into small tasks. As a result, what was once a single process becomes several processes that can be executed independently of one another and that are linked together by a series of queues. When a process needs to use the services of another process, the process generates a “queue request,” which is placed in a queue by the calling process and subsequently picked up and executed by a receiving process.
One example of the foregoing is a main program that provides a service for creating a Security Assertion Markup Language (“SAML”) assertion in response to a login request. In this example, the main program would obtain the user's credentials, validate the user, check the rules and policies, build an SAML assertion, and reply to the requesting service. Currently, it would be extremely difficult if not impossible to accomplish the foregoing using remote processes, as the program would be required to have knowledge of all of the security, audit, and other policies, as well as the topology of the system itself.
Currently, it is extremely difficult to use remote processes that employ queues because all security, audit, and policy needs are required to be added to and understood by the application. Additionally, the topology of the system cannot be hidden from the application, making it more difficult to dynamically change the services provided thereby.